home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / programming / e / nsm / examples / flip.e < prev    next >
Text File  |  1999-06-14  |  2KB  |  70 lines

  1. -> flip.e
  2.  
  3. /*
  4.  
  5. flip.c by Kjetil S. Matheussen 14.1.98.
  6. flip.e by Claude Heiland-Allen 1999.05.16
  7.  
  8. */
  9.  
  10. OPT OSVERSION=37, REG=3
  11.  
  12. MODULE 'other/nsm', 'other/nsm_extra'
  13.  
  14. RAISE "MEM" IF String() = NIL
  15.  
  16. PROC main() HANDLE
  17.  
  18.     DEF oss, bb,
  19.         starttrack, endtrack, startline, endline, pages, data,
  20.         track, line, page, cmd
  21.  
  22.     IF (oss := nsm_getoctabase()) = NIL THEN Raise("nsm")
  23.     IF (bb := nsm_getcurrblockbase(oss)) = NIL THEN Raise("nsm")
  24.  
  25.     IF nsm_ranged(oss)
  26.         starttrack := nsm_getrangestarttrack(oss)
  27.         endtrack   := nsm_getrangeendtrack(oss)
  28.         startline  := nsm_getrangestartline(oss)
  29.         endline    := nsm_getrangeendline(oss)
  30.     ELSE
  31.         starttrack := nsm_getcurrtrack(oss)
  32.         endtrack   := starttrack
  33.         startline  := 0
  34.         endline    := nsm_getnumlines(bb)-1
  35.     ENDIF
  36.  
  37.     pages := nsm_getnumpages(bb)
  38.  
  39.     FOR line := 0 TO (endline - startline + 1)/2 - 1
  40.         FOR track := starttrack TO endtrack
  41.             FOR cmd := MED_NOTE TO MED_INUM
  42.                 data := nsm_getmed(cmd, bb, track, line + startline, 1)
  43.                 nsm_setmed(cmd, bb, track, line + startline, 1,
  44.                     nsm_getmed(cmd, bb, track, endline - line, 1))
  45.                 nsm_setmed(cmd, bb, track, endline - line, 1, data)
  46.             ENDFOR
  47.             FOR page := 1 TO pages + 1
  48.                 FOR cmd := MED_CMDNUM TO MED_CMDLVL
  49.                     data := nsm_getmed(cmd, bb, track, line + startline, page)
  50.                     nsm_setmed(cmd, bb, track, line + startline, page,
  51.                         nsm_getmed(cmd, bb, track, endline - line, page))
  52.                     nsm_setmed(cmd, bb, track, endline - line, page, data)
  53.                 ENDFOR
  54.             ENDFOR
  55.         ENDFOR
  56.     ENDFOR
  57.  
  58.     nsm_updateeditor(oss)
  59.  
  60. EXCEPT DO
  61.  
  62.     SELECT exception
  63.     CASE "MEM";  WriteF('Error: no mem\n')
  64.     CASE "nsm";  WriteF('Error: no nsm\n')
  65.     ENDSELECT
  66.  
  67. ENDPROC IF exception THEN 5 ELSE 0
  68.  
  69. version: CHAR '$VER: flip 1.1 (1999.05.16)', 0
  70.